package com.ymm.platform.api.facade;

import com.github.pagehelper.PageInfo;
import com.ymm.platform.api.constants.dto.OrderShowDTO;
import com.ymm.platform.api.constants.dto.QueryDriverDTO;
import com.ymm.platform.api.constants.dto.QueryShipperDTO;
import com.ymm.platform.api.constants.dto.ShipperShowDTO;
import com.ymm.platform.api.constants.entity.CargoEntity;
import com.ymm.platform.api.constants.entity.DriverEntity;
import com.ymm.platform.api.constants.entity.ShipperEntity;
import com.ymm.platform.api.utils.Result;

import java.util.List;

/**
 * @Description: 货主查询服务
 * @Author: Xuecheng Li
 * @CreateTime: 2022-08-03  20:44
 * @Version: 1.0
 */
public interface PlatformQueryShipperService {
    /**
     * @Author: chencong
     * @Description: 分页查询所有货主
     * @DateTime: 17:26 2022/8/12
     * @Params: [pageNum]
     * @Return com.ymm.platform.api.utils.Result<java.util.List<com.ymm.platform.api.constants.entity.DriverEntity>>
     */
    Result<PageInfo> queryAllShipper(Integer pageNum, Integer pageSize);

    /**
     * @Author: chencong
     * @Description: 条件分页查询货主
     * @DateTime: 17:29 2022/8/12
     * @Params: [PageNum, queryDriverDTO]
     * @Return com.ymm.platform.api.utils.Result<java.util.List<com.ymm.platform.api.constants.entity.DriverEntity>>
     */
    Result<PageInfo> queryShipperOnCondition(Integer PageNum,Integer pageSize, QueryShipperDTO queryShipperDTO);


    /**
     * @Author: chencong
     * @Description: 查看货主完成订单总数
     * @DateTime: 17:34 2022/8/12
     * @Params: [PageNum, driverId]
     * @Return com.ymm.platform.api.utils.Result<java.lang.Long>
     */
    Result<Long> queryShipperCompleteOrder(Long shipperId);

    /**
     * @Author: chencong
     * @Description: 分页查看司机完成订单总数
     * @DateTime: 17:34 2022/8/12
     * @Params: [PageNum, driverId]
     * @Return com.ymm.platform.api.utils.Result<java.lang.Long>
     */
    Result<PageInfo> queryShipperCompleteOrderList(Integer PageNum,Integer pageSize, Long shipperId);

    /**
     * @Author: chencong
     * @Description: 查看货主取消订单
     * @DateTime: 17:40 2022/8/12
     * @Params: [PageNum, driverId]
     * @Return com.ymm.platform.api.utils.Result<java.lang.Long>
     */
    Result<Long> queryShipperUncompleteOrder(Long shipperId);

    /**
     * @Author: chencong
     * @Description: 分页查看查看货主取消订单
     * @DateTime: 17:44 2022/8/12
     * @Params: [PageNum, driverId]
     * @Return com.ymm.platform.api.utils.Result<java.util.List<com.ymm.platform.api.constants.dto.OrderShowDTO>>
     */
    Result<PageInfo> queryShipperUncompleteOrderList(Integer PageNum,Integer pageSize, Long shipperId);

    /**
     * @Author: chencong
     * @Description: 计算货主总支出
     * @DateTime: 17:45 2022/8/12
     * @Params:
     * @Return
     */
    Result<Integer> queryShipperTotalOutcome(Long shipperId);

    /**
    * @Author: chencong
    * @Description: 查询司机发布货源总数
    * @DateTime: 16:05 2022/8/13
    * @Params: [shipperId]
    * @Return com.ymm.platform.api.utils.Result<java.lang.Long>
    */
    Result<Long> queryShipperTotalShipments(Long shipperId);

    /**
    * @Author: chencong
    * @Description: 平台查询货主发布货源列表
    * @DateTime: 16:07 2022/8/13
    * @Params: [shipperId]
    * @Return com.ymm.platform.api.utils.Result<java.util.List<com.ymm.platform.api.constants.entity.CargoEntity>>
    */
    Result<PageInfo> queryShipperPublishCargo(Integer PageNum,Integer pageSize,Long shipperId);

    Result<PageInfo> queryShipperListByName(Integer pageNum, Integer pageSize,String shipperName);

    Result<PageInfo> queryShipperListByPhone(Integer pageNum, Integer pageSize,String shipperPhoneNum);

    Result<PageInfo> sortShipperByVipTypeD(Integer pageNum, Integer pageSize,Integer desc);

    Result<PageInfo> sortShipperByVipTypeA(Integer pageNum, Integer pageSize,Integer asc);
}
